package homeWorks;

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.util.Scanner;

/**
 * @date 2022-08-26 19:50
 * @author lijun
 * @fileName homeWork
 *
 */

public class Test01 {
    public static void main(String[] args) throws IOException {
        /**
         * 改错练习:
         * 程序启动后要求用户输入一个关键字，然后列出当前项目下所有
         * 名字中包含该关键字的子项
         * 单词记一记:
         * key  计算机中为"关键"的含义，不译为钥匙
         * dir  是单词directory的缩写，目录的意思
         * list 列表
         * @author li jun


        		Scanner scan = new Scanner(System.in);
		System.out.println("请输入关键字:");
        String key = scan.nextLine();
		//定位当前目录
		File dir = new File(".");
		//判断是否为目录
		if(dir.isDirectory()) {
			//获取该目录下所有子项
			File files[] = dir.listFiles();
            //length+()是方法,不加是属性
			for(int i=0;i<files.length;i++) {
				//获取每一个子项的名字
				String fileName = files[i].getName();
				//判断名字中是否包含key的内容
				if(fileName.contains(key)) {
					//包含就输出这个名字
					System.out.println(fileName);
				}
			}
		}






        /*
         * 列出当前目录中所有名字包含s的子项。
         * 使用匿名内部类和lambda两种写法
         * 单词记一记:
         * FileFilter   文件过滤器
         * accept       接受
         * @author  li jun
        //第二种写法
        //【指向路径】
        File dir = new File(".");
        //【判断是否为文件夹】
        if (dir.isDirectory()) {
            File[] subs = dir.listFiles(f -> f.getName().contains("s"));
            for (File sub : subs) {
                //【输出文件/文件夹名称】
                System.out.println(sub.getName());

            }
        }
        第一种写法
        if(dir.isFile()){
            System.out.println("是文件");
        }else{
            //【将目录下的内容生成列表并添加过滤器(内部类)】
            File[] subs = dir.listFiles(new FileFilter() {
                @Override
                public boolean accept(File pathname) {
                    String name = pathname.getName();
                    //【返回包含"s"的文件名称】
                    return name.contains("s");
                }
            });
            //【增强for循环】
            for (File sub : subs) {
                System.out.println(sub.getName());
            }
        }
        */

        /**
         * 程序启动后，要求用户输入一个文件名，如果文件存在则提示
         * 并要求用户更换，直到该文件还不存在为止，然后将这个文件
         * 在当前目录中创建出来。
         *
         * 单词记一记:
         * exsits 存在
         * create 创建
         * new    新的
         *
         * @author lijun
         *
         */
        /*
        //【创建一个获取用户输入的对象】
        Scanner scan = new Scanner(System.in);
        //【进入用户输入的循环】
        while (true) {
            //【给用户返回的提示】
            System.out.println("请输入完整的文件名(包括后缀):");
            //【获取用户输入的陆星+文件信息】
            String fileName = scan.nextLine();
            //【读取用户输入的路径】
            File file = new File(fileName);
            //【判断文件是否存在】
            if (file.exists()){
                //【给用户返回的提示】
                System.out.println("该文件已存在,请重新输入");
            }else{
                //【创建文件】
                file.createNewFile();
                //【给用户返回的提示】
                System.out.println("已创建文件:" + file.getName());
                //【用于退出循环】
                break;
            }
        }
         */
    }
}
